﻿using System.Collections.Generic;

namespace Bio.Structure
{
    /// <summary>
    /// Implementation of Structure, making up one of the core sets
    /// of data structures for the Structure library in Bio.
    /// </summary>
    public interface IStructure
    {
        /// <summary>
        /// Gets or sets the PDB Code for this protein structure such as 1BUY or 3IZ8.
        /// </summary>
        string PDBCode { get; set; }

        /// <summary>
        /// Gets the chains for this structure, matched to their chain letter.
        /// </summary>
        IDictionary<string, IChain> Chains { get; }

        /// <summary>
        /// Gets or sets the resolution of this structure.
        /// </summary>
        float Resolution { get; set; }

        /// <summary>
        /// Gets the dictionary of metadata for this Protein.
        /// Standard metadata for this object include:
        ///   Title
        ///   Description
        /// </summary>
        IDictionary<string, object> Metadata { get; }

        /// <summary>
        /// A method to convert the current protein into a PDB representation.
        /// </summary>
        /// <returns>A string of the PDB representation</returns>
        string ToPDB();
    }
}
